﻿using System;
using System.Web;
using System.Web.SessionState;

/* リリースできるようにするの優先でここの作りこみは一端はしない事にする
namespace jp110311.StorageModels
{
    public class AzureTableSessionStateProvider : SessionStateStoreProviderBase 
    {
        /// <summary>
        /// <see cref="T:System.Web.SessionState.SessionStateStoreProviderBase"/> の実装によって使用されているすべてのリソースを解放します。
        /// </summary>
        public override void Dispose()
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// Global.asax ファイルに定義されている Session_OnEnd イベントの <see cref="T:System.Web.SessionState.SessionStateItemExpireCallback"/> デリゲートへの参照を設定します。
        /// </summary>
        /// <returns>
        /// セッション状態ストア プロバイダーが Session_OnEnd イベントの呼び出しをサポートする場合は true。それ以外の場合は false。
        /// </returns>
        /// <param name="expireCallback">Global.asax ファイルに定義されている Session_OnEnd イベントの <see cref="T:System.Web.SessionState.SessionStateItemExpireCallback"/> デリゲート。</param>
        public override bool SetItemExpireCallback(SessionStateItemExpireCallback expireCallback)
        {
            return false;
        }

        /// <summary>
        /// 要求ごとの初期化のために、<see cref="T:System.Web.SessionState.SessionStateModule"/> オブジェクトによって呼び出されます。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param>
        public override void InitializeRequest(HttpContext context)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// セッション データ ストアから読み取り専用のセッション状態データを返します。
        /// </summary>
        /// <returns>
        /// セッション値およびセッション データ ストアからの情報を含む <see cref="T:System.Web.SessionState.SessionStateStoreData"/>。
        /// </returns>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関する <see cref="P:System.Web.SessionState.HttpSessionState.SessionID"/>。</param><param name="locked">このメソッドが返されるときに、要求したセッション項目がセッション データ ストアでロックされているときはブール値 true、それ以外の場合は false を含みます。</param><param name="lockAge">このメソッドが返されるときに、セッション データ ストアの項目がロックされた時間に設定された <see cref="T:System.TimeSpan"/> オブジェクトを含みます。</param><param name="lockId">このメソッドが返されるときに、現在の要求のロック識別子に設定されたオブジェクトを含みます。ロック識別子の詳細については、<see cref="T:System.Web.SessionState.SessionStateStoreProviderBase"/> クラスの概要の「セッション ストア データのロック」を参照してください。</param><param name="actions">このメソッドが返されるときに、現在のセッションが初期化されていない cookieless セッションかどうかを示す <see cref="T:System.Web.SessionState.SessionStateActions"/> 値の 1 つを含みます。</param>
        public override SessionStateStoreData GetItem(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// セッション データ ストアから読み取り専用のセッション状態データを返します。
        /// </summary>
        /// <returns>
        /// セッション値およびセッション データ ストアからの情報を含む <see cref="T:System.Web.SessionState.SessionStateStoreData"/>。
        /// </returns>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関する <see cref="P:System.Web.SessionState.HttpSessionState.SessionID"/>。</param><param name="locked">このメソッドが返されるときに、ロックの取得に成功した場合はブール値 true、それ以外の場合は false を含みます。</param><param name="lockAge">このメソッドが返されるときに、セッション データ ストアの項目がロックされた時間に設定された <see cref="T:System.TimeSpan"/> オブジェクトを含みます。</param><param name="lockId">このメソッドが返されるときに、現在の要求のロック識別子に設定されたオブジェクトを含みます。ロック識別子の詳細については、<see cref="T:System.Web.SessionState.SessionStateStoreProviderBase"/> クラスの概要の「セッション ストア データのロック」を参照してください。</param><param name="actions">このメソッドが返されるときに、現在のセッションが初期化されていない cookieless セッションかどうかを示す <see cref="T:System.Web.SessionState.SessionStateActions"/> 値の 1 つを含みます。</param>
        public override SessionStateStoreData GetItemExclusive(HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// セッション データ ストアの項目のロックを解除します。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関するセッション識別子。</param><param name="lockId">現在の要求に関するロック識別子。</param>
        public override void ReleaseItemExclusive(HttpContext context, string id, object lockId)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 現在の要求の値を使用してセッション状態データ ストアのセッション項目の情報を更新し、データのロックを解除します。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関するセッション識別子。</param><param name="item">保存する現在のセッション値を含む <see cref="T:System.Web.SessionState.SessionStateStoreData"/> オブジェクト。</param><param name="lockId">現在の要求に関するロック識別子。</param><param name="newItem">セッション項目を新しい項目に指定する場合は true。セッション項目を既存の項目に指定する場合は false。</param>
        public override void SetAndReleaseItemExclusive(HttpContext context, string id, SessionStateStoreData item, object lockId, bool newItem)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// セッション データ ストアから項目データを削除します。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関するセッション識別子。</param><param name="lockId">現在の要求に関するロック識別子。</param><param name="item">データ ストアから削除する項目を表す <see cref="T:System.Web.SessionState.SessionStateStoreData"/>。</param>
        public override void RemoveItem(HttpContext context, string id, object lockId, SessionStateStoreData item)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// セッション データ ストアの項目の有効期限の日時を更新します。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関するセッション識別子。</param>
        public override void ResetItemTimeout(HttpContext context, string id)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 現在の要求で使用する <see cref="T:System.Web.SessionState.SessionStateStoreData"/> オブジェクトを新規作成します。
        /// </summary>
        /// <returns>
        /// 現在の要求に関する新しい <see cref="T:System.Web.SessionState.SessionStateStoreData"/>。
        /// </returns>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="timeout">新しい <see cref="T:System.Web.SessionState.SessionStateStoreData"/> のセッション状態の <see cref="P:System.Web.SessionState.HttpSessionState.Timeout"/> 値。</param>
        public override SessionStateStoreData CreateNewStoreData(HttpContext context, int timeout)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 新しいセッション状態項目をデータ ストアに追加します。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param><param name="id">現在の要求に関する <see cref="P:System.Web.SessionState.HttpSessionState.SessionID"/>。</param><param name="timeout">現在の要求に関するセッション <see cref="P:System.Web.SessionState.HttpSessionState.Timeout"/>。</param>
        public override void CreateUninitializedItem(HttpContext context, string id, int timeout)
        {
            throw new NotImplementedException();
        }

        /// <summary>
        /// 要求の最後に <see cref="T:System.Web.SessionState.SessionStateModule"/> オブジェクトによって呼び出されます。
        /// </summary>
        /// <param name="context">現在の要求に関する <see cref="T:System.Web.HttpContext"/>。</param>
        public override void EndRequest(HttpContext context)
        {
            // する事ないはず
        }
    }
}
*/